$.namespace('sys.menu');

sys.menu = function() {
	var url = '',method = '';
	return {
		init : function() {
			this.initGrid();
			this.initComponents();
		},
		initComponents : function(){
			$('#parentId').combotree({
				url : ctxRest + '/sys/menu/list',
				lines : true,
				idFiled : 'id',
				textFiled : 'name',
				parentField : 'parentId',
				onLoadSuccess : function(node, data){
					$(this).tree('collapseAll');
				}
			});
			
			$('#isShow').combobox({
				valueField : 'code',
				textField : 'name',
				url : ctxRest + '/sys/basecode/get?classCode=yes_or_no',
				editable : false,
				method : 'get'
			});
			
			$('#isButton').combobox({
				valueField : 'code',
				textField : 'name',
				url : ctxRest + '/sys/basecode/get?classCode=yes_or_no',
				editable : false,
				method : 'get'
			});
		},
		initGrid : function() {
			$('#grid').treegrid({
				url : ctxRest + '/sys/menu/list',
				fit : true,
				fitColumns : true,
				nowrap : true,
				remoteSort : false,
				singleSelect : true,
				border : false,
				lines : true,
				//animate:true,
				idField : 'id',
				treeField : 'name',
				parentField : 'parentId',
				columns : [ [ {
					title : '菜单名称',
					field : 'name',
					width : 120
				}, {
					title : '链接',
					field : 'href',
					width : 150
				}, {
					title : '图标',
					field : 'icon',
					width : 80
				}, {
					title : '显示',
					field : 'isShow',
					width : 40,
					formatter : function (value, row, index) {
						if (value && value == '1') {
							return '是';
						} else {
							return '<font color="red">否</font>';
						}
					}
				}, {
					title : '按钮',
					field : 'isButton',
					width : 40,
					formatter : function (value, row, index) {
						if (value && value == '1') {
							return '是';
						} else {
							return '否';
						}
					}
				}, {
					title : '权限标识',
					field : 'permission',
					width : 120
				}, {
					title : '序号',
					field : 'sort',
					width : 40
				}] ],
				toolbar : '#toolbar',
				onDblClickRow : function(row) {
					sys.menu.showEditForm(row);
				},
				onLoadSuccess : function(node, data){
					$(this).treegrid('collapseAll');
					var rootNode = $(this).treegrid('getRoot');
					$(this).treegrid('expand', rootNode.id);
				}
			});
		},
		showForm : function() {
			$('#fmDlg').dialog('open');
			$('#fm').form('clear');
			var obj = $('#grid').treegrid('getSelected');
			if (obj) {
				if(obj.parentId){
					$('#parentId').combotree('setValue', obj.id);
				}
			}
			url = ctxRest + '/sys/menu/create';
			method = 'POST';
		},
		showEditForm : function(){
			var row = $('#grid').datagrid('getSelected');
			if (!row) {
				$.messager.alert('提示', '请选择要修改的数据', 'info');
				return;
			}
			$('#fmDlg').dialog('open');
			$('#fm').form('clear');
			$('#fm').form('load', row);
			url = ctxRest + '/sys/menu/update';
			method = 'POST';
		},
		getFormData : function(){
			var obj;
			var form = $('#fm');
			if (form.form('validate')) {
				obj = $.serializeObject(form);
				obj.parentId = obj.parentId ? obj.parentId : '0';
			}
			return obj;
		},
		saveOrupdate : function(){
			var obj = sys.menu.getFormData();
			if (obj) {
				progressLoad();
				$.ajax({
					type	: method,
					url		: url,
					data 	: JSON.stringify(obj),
					contentType : 'application/json;charset=utf-8',
					success : function(result) {
						progressClose();
						if (result && result.errcode == 0) {
							$('#fmDlg').dialog('close');
							$('#grid').treegrid('reload');
							$('#parentId').combotree('reload');
						}
					}
				})
			}
		},
		remove : function(){
			var row = $('#grid').datagrid('getSelected');
			if (!row) {
				$.messager.alert('提示', '请选择要删除的菜单', 'info');
				return;
			}
			$.messager.confirm('提示', '是否要删除该菜单？', function(flag) {
				if (flag) {
					progressLoad();
					$.ajax({
						type: 'GET',
						url : ctxRest + '/sys/menu/delete?id=' + row.id,
						success : function(result) {
							progressClose();
							if (result && result.errcode == 0) {
								$('#grid').treegrid('reload');
								$('#parentId').combotree('reload');
							}
						}
					})
				}
			})
		}
	};
}();

$(function() {
	sys.menu.init();
})